package com.ivc.info.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cs.framework.common.util.CommonUtils;
import com.cs.framework.jdbc.common.dao.CommonDao;
import com.ivc.info.dto.base.StockInfoDto;
import com.ivc.info.service.StockInfoService;

/**
 * 库存
 * 
 * @author hedongzhou
 * 
 */
@Service("stockInfoService")
public class StockInfoServiceImpl implements StockInfoService {

	@Resource
	private CommonDao commonDao;

	/**
	 * 查询库存
	 * 
	 * @param stockNo
	 *            库存编号
	 * @return
	 */
	public StockInfoDto get(Long stockNo) {
		return commonDao.getById(StockInfoDto.class, stockNo);
	}

	/**
	 * 根据商品编号查询库存
	 * 
	 * @param productNo
	 *            商品编号
	 * @return
	 */
	public StockInfoDto getByProductNo(String productNo) {
		StockInfoDto stockInfoDto = new StockInfoDto();
		stockInfoDto.setProductNo(productNo);

		return commonDao.selectOne("StockInfo.query", stockInfoDto, StockInfoDto.class);
	}

	/**
	 * 查询库存总数
	 * 
	 * @param stockInfoDto
	 * @return
	 */
	public int count(StockInfoDto stockInfoDto) {
		return commonDao.count("StockInfo.query", stockInfoDto);
	}

	/**
	 * 查询库存列表
	 * 
	 * @param stockInfoDto
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public <T extends StockInfoDto> List<T> query(T stockInfoDto) {
		return (List<T>) commonDao.selectList("StockInfo.query", stockInfoDto, stockInfoDto, stockInfoDto.getClass());
	}

	/**
	 * 新增库存
	 * 
	 * @param stockInfoDto
	 * @return
	 */
	public StockInfoDto save(StockInfoDto stockInfoDto) {
		return commonDao.save(stockInfoDto);
	}

	/**
	 * 修改库存
	 * 
	 * @param stockInfoDto
	 * @return
	 */
	public StockInfoDto update(StockInfoDto stockInfoDto) {
		StockInfoDto entity = get(stockInfoDto.getStockNo());
		if (entity == null) {
			CommonUtils.throwRun("未查询到相关的库存信息");
		}

		entity.setQuantity(stockInfoDto.getQuantity());

		return commonDao.update(entity);
	}

}
